package com.smart.community.work.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;

/**
 * 访客记录查询参数DTO
 * 
 * 严格按照《Java后端SpringBoot代码开发规范_重构版.md》DTO设计规范实现：
 * - 使用强类型参数：避免使用Map作为参数
 * - 参数验证：使用JSR-303注解进行参数验证
 * - 完整注释：所有字段都有完整的Schema注释
 * - 默认值设置：为分页参数设置合理的默认值
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Data
@Schema(description = "访客记录查询参数DTO")
public class VisitorQueryDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "页码", example = "1", required = true)
    @NotNull(message = "页码不能为空")
    @Min(value = 1, message = "页码必须大于0")
    private Integer pageNum = 1;
    
    @Schema(description = "每页大小", example = "10", required = true)
    @NotNull(message = "每页大小不能为空")
    @Min(value = 1, message = "每页大小必须大于0")
    private Integer pageSize = 10;
    
    @Schema(description = "访客姓名", example = "张三")
    private String visitorName;
    
    @Schema(description = "访问日期", example = "2025-01-30")
    private LocalDate visitDate;
    
    @Schema(description = "状态", example = "1")
    private Integer status;
    
    @Schema(description = "物业公司ID", example = "1")
    private Long propertyCompanyId;
}
